package swardToOffer.struct_4_tree;

/**
 * @Author ChanZany
 * @Date 2021/5/21 18:59
 * @Version 1.0
 * 面试题27：二叉树的镜像
 * 题目：请完成一个函数，输入一个二叉树，该函数输出它的镜像。
 * <p>
 * 通过画图可以观察到，一个镜像树的生成可以通过下面的方式
 * 对于每个父节点，交换其左右子树
 */
public class MirrorOfBinaryTree {
    void mirrorRecursively(TreeNode head) {
        if (head==null) return;
        TreeNode tmp = head.left;
        head.left = head.right;
        head.right = tmp;
        mirrorRecursively(head.left);
        mirrorRecursively(head.right);
    }

    public static void main(String[] args) {
//        TreeNode head = TreeUtil.build(new int[]{1, 2, 3, 4, 5}, 0, 4);
        TreeNode head = TreeUtil.build(new int[]{1}, 0, 0);
        MirrorOfBinaryTree Main = new MirrorOfBinaryTree();
        TreeUtil.preOrder(head);
        System.out.println("-----------mirror----------");
        Main.mirrorRecursively(head);
        TreeUtil.preOrder(head);
    }
}
